package com.iflytek.controller;

import com.iflytek.common.Result;
import com.iflytek.dto.GoodsDTO;
import com.iflytek.dto.PageDTO;
import com.iflytek.service.GoodsService;
import com.iflytek.vo.GoodsVO;
import com.iflytek.vo.PageVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 *
 * @author h_t
 * @since 2023-09-23
 */
@RestController
@RequestMapping("/api/goods")
public class GoodsController{
    @Autowired
    public GoodsService goodsService;

    /**
     * 查询所有商品（非分页）
     * @return
     */
    @ApiOperation("查询所有商品（非分页）")
    @GetMapping("")
    public Result<List<GoodsVO>> findAll(){
        return goodsService.findAll();
    }

    /**
     * 保存商品信息
     * @param goodsDTO
     * @return
     */
    @ApiOperation("保存商品信息")
    @PostMapping("")
    public Result<Boolean> saveGoods(@RequestBody GoodsDTO goodsDTO) {
        return goodsService.saveGoods(goodsDTO);
    }

    /**
     *更新商品
     * @param goodsDTO
     * @return
     */
    @ApiOperation("更新商品")
    @PutMapping("")
    public Result<Boolean> updateGoods(@RequestBody GoodsDTO goodsDTO) {
        return goodsService.updateGoods(goodsDTO);
    }

    /**
     *根据id获取商品详情
     * @param id
     * @return
     */
    @ApiOperation("根据id获取商品详情")
    @GetMapping("/{id}")
    public Result<GoodsVO> getGoodsId(@PathVariable("id")Long id){
        return goodsService.getGoodsId(id);
    }

    /**
     * 通过id删除商品
     * @param id
     * @return
     */
    @ApiOperation("通过id删除商品")
    @DeleteMapping("/{id}")
    public Result<Boolean> deleteId(@PathVariable("id")Long id){
        return goodsService.deleteId(id);
    }

    /**
     * 商品分页查询
     * @param pageDTO
     * @return
     */
    @ApiOperation("商品分页查询")
    @GetMapping("/page")
    public Result<PageVO<GoodsVO>> goodsPage(PageDTO pageDTO){
        return  goodsService.goodsPage(pageDTO);
    }

    /**
     * 根据分类分页查询商品
     * @param pageDTO
     * @param categoryId
     * @return
     */
    @ApiOperation("根据分类分页查询商品")
    @GetMapping("/byCategory/{id}")
    public Result<PageVO<GoodsVO>> findByCategory(PageDTO pageDTO, @PathVariable("id") String categoryId){
        return goodsService.findByCategory(pageDTO,categoryId);
    }

    /**
     * 获取推荐的商品列表
     * @return
     */
    @ApiOperation("获取推荐的商品列表")
    @GetMapping("/recommend")
    public Result<List<GoodsVO>> goodsRecommend(){
        return goodsService.goodsRecommend();
    }


    /**
     * 获取热销的商品
     * @return
     */
    @ApiOperation("获取热销的商品")
    @GetMapping("/sales")
    public Result<List<GoodsVO>> goodsSales(){
        return goodsService.goodsSales();
    }

    /**
     * 获取最新上架的商品
     * @return
     */
    @ApiOperation("获取最新上架的商品")
    @GetMapping("/news")
    public Result<List<GoodsVO>> goodsNews(){
        return goodsService.goodsNews();
    }
}